package com.br.consumir;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.StringTokenizer;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import com.br.parameter.CParameterWebService;


public class CWSCompanhia  implements Serializable
{
	private CParameterWebService parameterWebservice ;
	
	private String SOAP_ACTION = "buscaCompaniasPorAeroporto";
	private String METHOD_NAME = "buscaCompaniasPorAeroporto";
	
	private String SOAP_ACTION2 = "buscaVoosChegadaAeroportoCompania";
	private String METHOD_NAME2 = "buscaVoosChegadaAeroportoCompania";
	
	private String SOAP_ACTION3 = "buscaVoosSaidaAeroportoCompania";
	private String METHOD_NAME3 = "buscaVoosSaidaAeroportoCompania";
	
	private ArrayList<String> arrayCompaniasPorAero = new ArrayList<String>();
	
	private String sVooCheAerCom;
	private String sVooSaiAerCom;
	
	//Contrutor da classe que instancia um parametro de webservice
	public CWSCompanhia()
	{	//instanciando o objeto de parametro do webservice
		parameterWebservice = new CParameterWebService().getInstance();
	}
	
	/******************************************************
	 * Metodo que busca as companias por aeroporto
	 * Parametro: String
	 * Retorno : Array de String
	 */
	public ArrayList<String> retornaCompaniasByAero(String pAero)
	{
		try {
			//declarando objeto soapobject
		    SoapObject request = new SoapObject(
			parameterWebservice.getNAMESPACE(), METHOD_NAME);
		    //passando o parametro para o webservice
		    request.addProperty("sNomeAeroporto",pAero);
		    
		    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
			    SoapEnvelope.VER11);
		    envelope.setOutputSoapObject(request);
		    HttpTransportSE androidHttpTransport = new HttpTransportSE(parameterWebservice.getURL());
		    androidHttpTransport.call(SOAP_ACTION, envelope);
		    //recebendo do webservice os dados com um objeto
		    Object response = envelope.getResponse();
		    // this.retorno = response.toString();
		    //criando o StringTokenizer que separa o nome das companias na String 
		    StringTokenizer st = new StringTokenizer(response.toString(), ";");

		    while (st.hasMoreTokens()) {
			//criando uma compania para inserir no array de String
		    	String compania = st.nextToken();
			arrayCompaniasPorAero.add(compania);
		    }

		} catch (Exception e) {
		    e.printStackTrace();
		}
		//retornando o arraylista com os nomes das companias por aeroporto
		return arrayCompaniasPorAero;
	}
	/*****************************************************************/
	
	
	/*****************************************************************
	 * Metodo buscaVoosChegadaAeroportoCompania 
	 * Parametros: String nome aeroporto , String Nome Compania
	 * Retorno : String com nome e numero de voos
	 */
	public String retornaVoosChegadaProAeroportoECompania(String pAero,String pCompania)
	{
		try {
			//declarando objeto soapobject
		    SoapObject request = new SoapObject(
			parameterWebservice.getNAMESPACE(), METHOD_NAME2);
		    //passando parametro para webservice
		    request.addProperty("pNomeAeroporto",pAero);
		    request.addProperty("pNomeCompania",pCompania);
		    
		    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
			    SoapEnvelope.VER11);
		    envelope.setOutputSoapObject(request);
		    HttpTransportSE androidHttpTransport = new HttpTransportSE(parameterWebservice.getURL());
		    androidHttpTransport.call(SOAP_ACTION2, envelope);
		    //recebendo do webservice os dados com um objeto
		    Object response = envelope.getResponse();
		    //passando o valor recebido para uma String
		    this.sVooCheAerCom = response.toString();
		}catch (Exception e) 
		{
			e.printStackTrace();
		}
		//retornando a String
		return this.sVooCheAerCom;
	}
	/******************************************************************/
	
	
	/******************************************************************
	 * Metodo buscaVoosSaidaAeroportoCompania
	 * Parametro String Nome Aeroporto String nome Compania
	 * Retorno String com numero de voos
	 */
	public String retornaVoosSaidaAeroCompania(String pAero,String pCompania)
	{
		try {
			//declarando objeto soapobject
		    SoapObject request = new SoapObject(
			parameterWebservice.getNAMESPACE(), METHOD_NAME3);
		    //passando parametro para webservice
		    request.addProperty("pNomeAeroporto",pAero);
		    request.addProperty("pNomeCompania",pCompania);
		    
		    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
			    SoapEnvelope.VER11);
		    envelope.setOutputSoapObject(request);
		    HttpTransportSE androidHttpTransport = new HttpTransportSE(parameterWebservice.getURL());
		    androidHttpTransport.call(SOAP_ACTION3, envelope);
		    //recebendo do webservice os dados com um objeto
		    Object response = envelope.getResponse();
		    //passando o valor recebido para uma String
		    this.sVooSaiAerCom = response.toString();
		}catch (Exception e) 
		{
			e.printStackTrace();
		}
		return this.sVooSaiAerCom;
	}
	/************************************************************************/
}